home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 7
/
Gekikoh Dennoh Club Vol. 7 (Japan).7z
/
Gekikoh Dennoh Club Vol. 7 (Japan) (Track 01).bin
/
games
/
cs
/
cs_boot.s
< prev
next >
Wrap
Text File
|
1999-06-15
|
3KB
|
164 lines
;----------------------------------------------------------------
;
; 『「クリオスサイト」体験版2』ブートプログラム
; CS_BOOT.X v1.01 (1999.06.15) by M.Kamada
;
;----------------------------------------------------------------
;
; ・設定とスコアを CD-ROM に書き込もうとして「書き込み不可能で
; す」の白帯が出るのを回避する。
;
;----------------------------------------------------------------
.include doscall.mac
.include iocscall.mac
;----------------------------------------------------------------
;バージョン定義
PROGNAME reg 'CS_BOOT'
LOWER_PROGNAME reg 'cs_boot'
VERSION reg '1.01'
DATE reg '1999.06.15'
;----------------------------------------------------------------
;定数
OPCODE_PEA_DPC equ %0100_100_001_111_010
OPCODE_BRA_W equ %0110_0000_00000000
;----------------------------------------------------------------
;MPUが68000かどうか調べる
;>dn.l:0=68000,1=68000以外
;>z-flag:eq=68000,ne=68000以外
IS68000 .macro dn
.cpu 68020
@base:
moveq.l #1,dn
and.b (@base-1,pc,dn.l*2),dn
.cpu 68000
.endm
;----------------------------------------------------------------
;実行開始位置
.text
exec_entry:
lea.l (16,a0),a0
suba.l a0,a1
movem.l a0-a1,-(sp)
DOS _SETBLOCK
addq.l #8,sp
lea.l stack_top,sp
lea.l execparam-8,a0
subq.l #8,a2
moveq.l #8+1-1,d0
@@: move.b (a2)+,(a0)+
dbra d0,@b
movea.l a2,a1
bsr strcpy
lea.l (filename,pc),a1
lea.l execname,a0
bsr strcpy
clr.l -(sp)
pea.l execparam
pea.l execname
move.w #2,-(sp)
DOS _EXEC
lea.l (14,sp),sp
move.l d0,d7
bmi main_exit
clr.l -(sp)
pea.l execparam
pea.l execname
move.w #1,-(sp)
DOS _EXEC
lea.l (14,sp),sp
move.l d0,d7
bmi main_exit
.if 0
cmpi.l #'conf',(256+$FC0,a0)
bne error
cmpi.l #'scor',(256+$156A,a0)
bne error
cmpi.b #'w',(256+$12E1,a0)
bne error
cmpi.w #'t'<<8,(256+$12E2,a0)
bne error
.endif
cmpi.l #(OPCODE_PEA_DPC<<16)+(($12E1-($14CE+2)).and.$FFFF),(256+$14CE,a0)
bne error
cmpi.l #(OPCODE_PEA_DPC<<16)+(($FC0-($14CE+4+2)).and.$FFFF),(256+$14CE+4,a0)
bne error
cmpi.l #(OPCODE_PEA_DPC<<16)+(($12E1-($19D2+2)).and.$FFFF),(256+$19D2,a0)
bne error
cmpi.l #(OPCODE_PEA_DPC<<16)+(($156A-($19D2+4+2)).and.$FFFF),(256+$19D2+4,a0)
bne error
move.l #(OPCODE_BRA_W<<16)+(($1560-($14CE+2)).and.$FFFF),(256+$14CE,a0)
move.l #(OPCODE_BRA_W<<16)+(($1AE4-($19D2+2)).and.$FFFF),(256+$19D2,a0)
IS68000 d0
beq @f
moveq.l #3,d1
IOCS _SYS_STAT
@@:
move.l d7,-(sp)
move.w #4,-(sp)
DOS _EXEC
addq.l #6,sp
move.l d0,d7
main_exit:
move.w d7,-(sp)
DOS _EXIT2
error:
pea.l (dummy_exit,pc)
move.w #4,-(sp)
DOS _EXEC
addq.l #6,sp
pea.l (m_error,pc)
DOS _PRINT
addq.l #4,sp
moveq.l #1,d7
bra main_exit
dummy_exit:
DOS _EXIT
filename: .dc.b 'C_SITE.X',0
m_error: .dc.b 'C_SITE.X のバージョンが違います',13,10,0
.even
.bss
.even
.ds.l 2
execparam: .ds.b 1024
execname: .ds.b 256
.even
.ds.b 1024*64
stack_top:
;----------------------------------------------------------------
;文字列をコピーする
;<a0.l:コピー先
;<a1.l:コピーする文字列
;>a0.l:コピー先の文字列の末尾の0の位置
;>a1.l:コピーした文字列の末尾の0の次の位置
.text
strcpy::
@@: move.b (a1)+,(a0)+
bne @b
subq.l #1,a0
rts
;----------------------------------------------------------------
.end exec_entry